package org.spring.bean.factory;

/**
 * 由 {@link BeanFactory} 设置所有属性后需要做出反应的 bean 实现的接口：例如执行自定义初始化，或仅检查是否已设置所有必需属性。
 * <p>
 * 实现 {@code InitializingBean} 的替代方法是指定自定义 init 方法，例如在 XML bean 定义中。
 * 有关所有 bean 生命周期方法的列表，请参阅 {@link BeanFactory BeanFactory javadocs}。
 *
 * @author 李坤
 * @date 2022/4/24 11:08
 */
public interface InitializingBean {

    /**
     * 在设置所有 bean 属性并满足 {@link BeanFactoryAware}、{@code ApplicationContextAware} 等后由包含 {@code BeanFactory} 调用。
     * <p>
     * 此方法允许 bean 实例在设置所有 bean 属性后执行其整体配置和最终初始化的验证。
     *
     * @throws Exception 在配置错误的情况下（例如未能设置基本属性）或由于任何其他原因初始化失败
     */
    void afterPropertiesSet() throws Exception;

}
